 <#-- 
 
 crea una clase para vb para la tabla  ${table}...
 Author : Luis Molina...
 
 -->
<#-- variables used internally by the generator... -->
<#assign nameFile="aspx">
<#assign extensionFile="cs">
<#assign languageGenerated="c#">
<#assign description="c#">
<#assign targetDirectory="clases">
<#assign appliesToAllTables="true">
<#-- END variables used internally by the generator... -->

 
<%@ Page Language="VB" %>

'
' Formulario base
' Luis Molina - Mica Soft


' Proyecto <%=proyectoActual.nombre%>
'<%=proyectoActual.archivo%>
' ------------------------------

 
<%'=tablaActual.listaTodosLosCampos%>
<%'=numeroCampos%>

Imports Microsoft.VisualBasic

Imports System
Imports System.Data
Imports System.Collections.Generic

Imports System.Text
Imports System.Io


<System.ComponentModel.DataObject()> _
Public Class bll<%=tablaActual.nombre%>


      <System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, True)> _
  Public Shared Function Get<%=tablaActual.nombre%>() As List(Of <%=tablaActual.nombre%>)

        Dim lista<%=tablaActual.nombre%> As New List(Of <%=tablaActual.nombre%>)
        Dim db As New dbClass(ctes.constringAdo)
        Try
            dim sb as new stringBuilder
            sb.append(" select ")
            sb.append("<%=tablaActual.listaTodosLosCampos%>")
            sb.append(" from <%=tablaActual.nombre%>")
            Dim ds As DataSet = db.sqlDataset(sb.tostring)

            Dim row As DataRow
            For Each row In ds.Tables(0).Rows
                Dim new<%=tablaActual.nombre%>  As New <%=tablaActual.nombre%>()
                <% 
                for each campox as campo in tablaActual.campos
                        If campox.seleccionado Then
                            Select Case campox.tipo
                                        Case dataTypes.dataType.booleano
                                        %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.bool(row("<%=campox.nombre%>"))
                                   <%     
                                        Case dataTypes.dataType.doble
                                         %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.doble(row("<%=campox.nombre%>"))
                                   <%    
                                        Case dataTypes.dataType.entero
                                             %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.entero(row("<%=campox.nombre%>"))
                                   <%
                                            
                                        Case dataTypes.dataType.fecha
                                            %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.fecha(row("<%=campox.nombre%>"))
                                   <% 
                                        Case dataTypes.dataType.moneda
                                            %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.doble(row("<%=campox.nombre%>"))
                                   <% 
                                        Case dataTypes.dataType.texto
                                          %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.cadena(row("<%=campox.nombre%>"))
                                   <%   
                                            
                                   Case Else
                                         %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.cadena(row("<%=campox.nombre%>"))
                                    <%   
                               End Select
                               
                        End If
	            next
                %>
                
               

                lista<%=tablaActual.nombre%>.Add(new<%=tablaActual.nombre%> )
                new<%=tablaActual.nombre%> =nothing
            Next
        Catch ex As Exception
        Finally
            db.dispose()
        End Try


        'authors.Sort(New AuthorComparer(sortExpression))
        Return lista<%=tablaActual.nombre%>
    End Function

' si hay un campo clave
<%
    If Not campoClave Is Nothing Then
        %>
         <System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, True)> _
 Public Shared Function Get<%=tablaActual.nombre%>By<%=campoClave.nombre%> (ByVal <%=campoClave.nombre%> As <%=lb.dataTypes.dataTypeInTemplate(campoClave.tipo)%>) As <%=tablaActual.nombre%>
        Dim new<%=tablaActual.nombre%>  As New <%=tablaActual.nombre%>

        Dim db As New dbClass(ctes.constringAdo)
        Dim reg As Object
        Dim sql As New StringBuilder
        Try
            sql.Append(" select ")
            sql.append(" <%=listaCamposAndKey%>")
            
            sql.Append(" from <%=tablaActual.nombre%> ")
            sql.Append(" where  <%=campoClave.nombre%>=")
            sql.Append(<%=campoClave.nombre%>)

            reg = db.sql(sql.ToString)
            If reg.read Then
               <% 
                for each campox as campo in tablaActual.campos
                        If campox.seleccionado Then
                            Select Case campox.tipo
                                        Case dataTypes.dataType.booleano
                                        %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.bool(reg("<%=campox.nombre%>"))
                                   <%     
                                        Case dataTypes.dataType.doble
                                         %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.doble(reg("<%=campox.nombre%>"))
                                   <%    
                                        Case dataTypes.dataType.entero
                                             %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.entero(reg("<%=campox.nombre%>"))
                                   <%
                                            
                                        Case dataTypes.dataType.fecha
                                            %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.fecha(reg("<%=campox.nombre%>"))
                                   <% 
                                        Case dataTypes.dataType.moneda
                                            %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.doble(reg("<%=campox.nombre%>"))
                                   <% 
                                        Case dataTypes.dataType.texto
                                          %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.cadena(reg("<%=campox.nombre%>"))
                                   <%   
                                            
                                   Case Else
                                         %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.cadena(reg("<%=campox.nombre%>"))
                                    <%   
                               End Select
                        End If
	            next
                %>
              

            End If

        Catch ex As Exception
        Finally
            db.dispose()
        End Try
        Return new<%=tablaActual.nombre%>
        new<%=tablaActual.nombre%> = nothing
        'authors.Sort(New AuthorComparer(sortExpression))

    End Function
        <%
    End If
 %>
   

    <System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, True)> _
Public Shared Sub Update ( _
<% 
    contador = 1
                for each campox as campo in tablaActual.campos
        If campox.seleccionado Then
            Select Case campox.tipo
                Case dataTypes.dataType.texto
                     %>byval <%=campox.nombre%> as string <%
                Case dataTypes.dataType.doble
                     %>byval <%=campox.nombre%> as double  <%
                Case dataTypes.dataType.fecha
                     %>byval <%=campox.nombre%> as date  <%
                Case dataTypes.dataType.booleano
                     %>byval <%=campox.nombre%> as boolean  <%
                Case dataTypes.dataType.entero
                     %>byval <%=campox.nombre%> as integer <%
                Case Else
                     %>byval <%=campox.nombre%> as string  <%
            End Select
                          
                                                   End If
                                                            if contador  <> tablaActual.campos.Count  then
					 %>,<%
					 else
					 %>
					 
					 <%	
				
					 end if
                                                   contador += 1
	            next
                %>)

        Try

            Dim new<%=tablaActual.nombre%> As New <%=tablaActual.nombre%>()
            new<%=tablaActual.nombre%>.readDb(new<%=tablaActual.nombre%>.<%=campoClave.nombre%>)

<% 
                for each campox as campo in tablaActual.campos
                        If campox.seleccionado Then
                           %>
                            new<%=tablaActual.nombre%>.<%=campox.nombre%> =  <%=campox.nombre%> 
                           <%
                        End If
	            next
                %>
             
            <%=tablaActual.nombre%>.update (new<%=tablaActual.nombre%>)


        Catch ex As Exception
        Finally

        End Try


        'authors.Sort(New AuthorComparer(sortExpression))

    End Sub


<System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Update, True)> _
 Public Shared Function update (Byval <%=tablaActual.nombre%>x As <%=tablaActual.nombre%>) As Boolean
        Dim db As New dbClass(ctes.conStringAdo)
        Dim sqlt As String
        Try

            sqlt = " update <%=tablaActual.nombre%> set  "
          
          <%
	contador=0
	for each campox as campo in tablaActual.campos
		contador+=1
		
		if  campox.seleccionado and not campox.isKey then
			
			 if contador <> 1 then
			 %> sqlt += "," &<%
			 else
			 %>sqlt += <%	
		
			 end if
				select case campox.tipo
	  			 
	  				case dataTypes.dataType.texto
	  					%> " <%=campox.nombre%>='" & sf.cadena(<%=tablaActual.nombre%>x.<%=campox.nombre%>) & "' " 
	  					<%
	  					
	  				case dataTypes.dataType.entero
	  					%> " <%=campox.nombre%>=" & sf.cadena(<%=tablaActual.nombre%>x.<%=campox.nombre%>) 
	  					<%
	  					
	  				
	  				case dataTypes.dataType.enteroSingle
	  					%> " <%=campox.nombre%>=" & sf.cadena(<%=tablaActual.nombre%>x.<%=campox.nombre%>)  
	  					<%
	  					
	  				case dataTypes.dataType.doble
	  					%> " <%=campox.nombre%>='" & sf.cadena(<%=tablaActual.nombre%>x.<%=campox.nombre%>)  & "' "
	  					<%
	 	  				
 					case dataTypes.dataType.fecha
	  					%> " <%=campox.nombre%>='" & <%=tablaActual.nombre%>x.<%=campox.nombre%>.toShortDateString() & "' " 
	  					<%
	  		  			
					case dataTypes.dataType.booleano
	  					%> " <%=campox.nombre%>=" & sf.Entero(<%=tablaActual.nombre%>x.<%=campox.nombre%>).toString() 
	  					<%
	  					Case dataTypes.dataType.moneda
	  					    	%> " <%=campox.nombre%>='" & sf.cadena(<%=tablaActual.nombre%>x.<%=campox.nombre%>)  & "' "
	  					<%
	  					case else
	  					%> " <%=campox.nombre%>='" & sf.Cadena(<%=tablaActual.nombre%>x.<%=campox.nombre%>) & "' " 
	  					<%
	  						  					
                    End Select
                End If
			 
		next 
%>      
                            
           
            sqlt += " where <%=campoClave.nombre%> =" & <%=tablaActual.nombre%>x.<%=campoClave.nombre%>
            db.ejecutar(sqlt)
           return true
        Catch ex As Exception
        	return false
        
        Finally
            db.dispose()
        End Try
    End Function



<System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, True)> _
Public Shared Function insert (byval obj<%=tablaActual.nombre%> as <%=tablaActual.nombre%>) As String
        Dim db As New dbClass(ctes.conStringAdo)

        Dim reg As Object
        Dim sqlt As String
        Try

            sqlt = " insert into <%=tablaActual.nombre%> (<%
    ' esta rutina pone seguidos todos losnombres de los campos
	contador=0
	for each campox as campo in tablaActual.campos
		
		
		if  campox.seleccionado and not campox.isKey then
			if  contador  = tablaActual.campos.Count - 1 then
				 
				%><%=campox.nombre%><%
				 			
				else
				 
				%><%=campox.nombre%>,<%				
				 
			end if  
		end if
		contador+=1
		next 
%>" 
            
            sqlt += " ) values ("

                       <%
	contador=0
	for each campox as campo in tablaActual.campos
		contador += 1
		
		
		if  campox.seleccionado and not campox.isKey then
			
				select case campox.tipo
	  			 
	  				case dataTypes.dataType.texto
	  					%>
	  					sqlt += "'" & sf.SafeSql(obj<%=tablaActual.nombre%>.<%=campox.nombre%>) & "' "<%
	  					

	  				case dataTypes.dataType.entero
	  					%>
	  					sqlt += " " & obj<%=tablaActual.nombre%>.<%=campox.nombre%>.ToString<%
	  					
	  				
	  				case dataTypes.dataType.enteroSingle
	  					%>
	  					sqlt += " " & obj<%=tablaActual.nombre%>.<%=campox.nombre%>.ToString<%
	  					
	  				case dataTypes.dataType.doble
	  					%>
	  					sqlt += " " & obj<%=tablaActual.nombre%>.<%=campox.nombre%>.ToString<%
	 	  				
 					case dataTypes.dataType.fecha
	  					%>
	  					sqlt += " '" & obj<%=tablaActual.nombre%>.<%=campox.nombre%>.ToShortDateString & "' " <% 
	  		  			
					case dataTypes.dataType.booleano
	  					%>
	  					sqlt += " " & sf.Entero(obj<%=tablaActual.nombre%>.<%=campox.nombre%>).ToString<%
	  					                                                                               Case dataTypes.dataType.moneda
	  					                                                                                   %>
	  					sqlt += " " & obj<%=tablaActual.nombre%>.<%=campox.nombre%>.ToString<%
	 	  				case else
	 	  				%>
	  					%>
	  					sqlt += "'" & sf.SafeSql(obj<%=tablaActual.nombre%>.<%=campox.nombre%>) & "' "<%
	  					
	  			
	  			
                                                                                                   End Select
	  						
	  			
	  				 if contador  <> tablaActual.campos.Count  then
					 %> & "," 
					 <%
					 else
					 %>
					 
					 <%	
				
					 end if
	  		end if 
	  		
	  		
		
		next 
%>
			 sqlt += " )"

            db.ejecutar(sqlt)
            reg = db.sql("select @@identity as id from <%=tablaActual.nombre%>")
            If reg.Read() Then
                return reg("id").ToString
            Else
                return ""
            End If
            reg.close()

           
        Catch ex As Exception
        Finally
            db.dispose()
        End Try


    End Function 'insertarEnBd()




<%
    ' if there are relations 
    If tablaActual.foreignKeys.Count > 0 Then
        For Each fk As lb.foreignKey In tablaActual.foreignKeys
            %>
        
        
         <System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, True)> _
 Public Shared Function Get<%=tablaActual.nombre%>By<%=campoClave.nombre%> (ByVal <%=campoClave.nombre%> As String) As <%=tablaActual.nombre%>
        Dim new<%=tablaActual.nombre%>  As New <%=tablaActual.nombre%>()

        Dim db As New dbClass(ctes.constringAdo)
        Dim reg As Object
        Dim sql As New StringBuilder
        Try
            sql.Append(" select ")
            sql.append(" <%=listaCamposAndKey%>")
            
            sql.Append(" from <%=tablaActual.nombre%> ")
            sql.Append(" where  <%=campoClave.nombre%>=")
            sql.Append(<%=campoClave.nombre%>)

            reg = db.sql(sql.ToString)
            If reg.read Then
               <% 
                for each campox as campo in tablaActual.campos
                        If campox.seleccionado Then
                            Select Case campox.tipo
                                        Case dataTypes.dataType.booleano
                                        %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.bool(reg("<%=campox.nombre%>"))
                                   <%     
                                        Case dataTypes.dataType.doble
                                         %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.doble(reg("<%=campox.nombre%>"))
                                   <%    
                                        Case dataTypes.dataType.entero
                                             %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.entero(reg("<%=campox.nombre%>"))
                                   <%
                                            
                                        Case dataTypes.dataType.fecha
                                            %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.fecha(reg("<%=campox.nombre%>"))
                                   <% 
                                        Case dataTypes.dataType.moneda
                                            %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.doble(reg("<%=campox.nombre%>"))
                                   <% 
                                        Case dataTypes.dataType.texto
                                          %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.cadena(reg("<%=campox.nombre%>"))
                                   <%   
                                            
                                   Case Else
                                         %>
                                    new<%=tablaActual.nombre%>.<%=campox.nombre%> = sf.cadena(reg("<%=campox.nombre%>"))
                                    <%   
                               End Select
                        End If
	            next
                %>
              

            End If

        Catch ex As Exception
        Finally
            db.dispose()
        End Try
        Return new<%=tablaActual.nombre%>

        'authors.Sort(New AuthorComparer(sortExpression))

    End Function
            <%
        Next
    End If
 %>



#Region "relations2"
<%
    ' now relations with other tables
    For Each tabla As lb.tabla In proyectoActual.tablas
        If tabla.seleccionado Then
            For Each fk As foreignKey In tabla.foreignKeys
                'Response.Write("tabla padre " & fk.tablaPadre & "<br>")
                'Response.Write("tabla hijo " & fk.tablaHijo & "<br>")
                'Response.Write("tablaActual.nombre " & fk.tablaHijo & "<br><br>")
                
                If fk.tablaHijo = tablaActual.nombre Then
                    
                    
            %>
       
       public Function get<%=fk.tablaHijo%>By<%=fk.campoHijo%>(byval <%=fk.campoHijo%> as integer) As List(Of <%=tablaActual.nombre%>)
              Dim db As New dbClass(ctes.conStringAdo)
                        Dim sql As String
                        Dim reg As Object
                        Dim lista as new List (of <%=tablaActual.nombre%>)
                        
                        Try
                            sql = "select * from <%=tablaActual.nombre%>"
                            reg = db.sql(sql)
                            Do While reg.read()
                                Dim pp As New <%=tablaActual.nombre%>
                                
	                <%
	                contador=0
	                for each campox as campo in tablaActual.campos
		                contador+=1
                		
		                if  campox.seleccionado
                			
				                select case campox.tipo
                	  			 
	  				                case dataTypes.dataType.texto
	  					                %>
	  					                pp.<%=campox.nombre%> = sf.Cadena(reg("<%=campox.nombre%>"))
	  					                <%
                	  					

	  				                case dataTypes.dataType.entero
	  					                %>
	  					                pp.<%=campox.nombre%> = sf.Entero(reg("<%=campox.nombre%>"))
	  					                <%
                	  					
                	  				
	  				                case dataTypes.dataType.enteroSingle
	  					                %>
	  					                pp.<%=campox.nombre%> = sf.Single(reg("<%=campox.nombre%>"))
	  					                <%
                	  					
	  				                case dataTypes.dataType.doble
	  					                %>
	  					                pp.<%=campox.nombre%> = sf.Doble(reg("<%=campox.nombre%>"))
	  					                <%
                	 	  				
 					                case dataTypes.dataType.fecha
	  					                %>
	  					                pp.<%=campox.nombre%> = sf.Fecha(reg("<%=campox.nombre%>"))
	  					                <%
                	  		  			
					                case dataTypes.dataType.booleano
	  					                %>
	  					                pp.<%=campox.nombre%> = sf.Bool(reg("<%=campox.nombre%>"))
	  					                <%
	  					                Case dataTypes.dataType.moneda
	  					    	                %>
	  					                pp.<%=campox.nombre%> = sf.Doble(reg("<%=campox.nombre%>"))
	  					                <%
	  					                Case Else
	  						                %>
	  					                pp.<%=campox.nombre%> = sf.Cadena(reg("<%=campox.nombre%>"))
	  					                <%    
                	  						  					
                                    End Select
			                end if  
		                next 
                %>                
                
                lista.Add(pp)
                pp = Nothing
            Loop
            reg.close()
        Catch ex As Exception
        Finally
            db.dispose()
        End Try
        return lista
        lista=nothing
         
       end Function
       
       
       public Function delete<%=tablaActual.nombre%>By<%=fk.campoHijo%> (byval <%=fk.campoHijo%>x as integer)
            Dim db As New dbClass(ctes.conStringAdo)

            Dim sqlt As String
            Try
                sqlt = " delete from <%=tablaActual.nombre%> where <%=fk.campoHijo%>=" & <%=fk.campoHijo%>x
                db.ejecutar(sqlt)

            Catch ex As Exception
            Finally
                db.dispose()
            End Try
       End Function     
       
           
       
       
   
            <%
                    
                    
                    
                    
                End If
            Next
            
            
        End If
    Next
   
    
       
 %>
#End Region

   Public Sub New()

    End Sub

    Protected Overrides Sub Finalize()
        MyBase.Finalize()
    End Sub

End Class


 
